<!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <meta content="IE=edge" http-equiv="X-UA-Compatible" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta content="width=device-width, initial-scale=1, maximum-scale=1" name="viewport" />
        <title>智能OJ系统</title>

        <style>
          html {
            margin: 0;
            padding: 0;
          }

          @font-face {
  font-family: 'mm-iconfont';
  src: url('data:application/font-woff2;charset=utf-8;base64,d09GMgABAAAAAAVcAA0AAAAADSAAAAUHAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4GVgCCShEICo0IigYLGAABNgIkAx4EIAWFLAd0G58KyI7S1LBNkiTFr/P/+6Z638ziLBkIQ8wrsxwEKUmBA4Dwlfarxzy8f+PP7b21ZXFa6IFleXg1a60AqO3LF3jX79fq2xMRxM/jDd1CpYX3FxcP1SqJuY6YNU3FUiQ2jtU11Up8H/EkAATA3TXpGgA83rt/vfLZBDABYQCGcAKRAAxAFXRBBnayKwD+gZ+nPyqFBjBygXL/DlvTIWjwo3cVuK8s9Sl++AEEEjlOjElBk3hilJIMpUKKY21LyxouyaqeWOQjuRrUI+IKdQAY7d9DwI5a04k3MIQFzgG2AOwIKjVqJIrYTsbHABOn6EE+VdOSA1gHO0CS9GBxkMQUvqKqmhP23oxVltyoYu+7Facuv129xJ6zAUpuNJw/Noer8zbl/7HRtyFEqCv9mw2LZ3VXCfF7ULGQwXk1E0zFkant5pHX+SO069xIZQFP7GuSunhzT+uPuaGY8wjz93lhNH9+VyPuCPieEDFvrGZaKEn8By0/Xn3v0RVHUmC89ZOhDlh3jGjeou4WwZ4VRP5wFNIcni96pNDC/qa/zwFLw/qDuH+eGGTtvRnLltyoYu67FceX3+5qwVyZ4I0Xa9BhhYiSnsziTU5ZezSSLTiSYq47FsUXHwcvFjNkwu3NBXzMKiJ/15BtsMQ1xgy5e7/7/fvd7t3pcudO16737nWjDd3v3u16ULnTY0/s1yP0/Scmui+Y0HDii4p2hF3JmehUsiKsiv/3cSrHVX6R/IJJdzYQ9r9pP26TdOc/zP6LnbKg9ZkfiIwv+XOzYQe94qkIvdk05Kn/lyMsmm8KPh98KGQVX3h25WBxRS+vXRVyjG6mfDgvpohyqM+M8zOu6OX0K63v9aXZ8EOl+hM99FbLkGeTpl4Nig85BNS98ahbdCwAz502byvV8h3Wg/UjvlpDaulHWXJ45xmpkR+vfH/c0lR+U6qRDFPFMasTvr+qVeUxFMVUJpGYeohQqEP2nPx5SKO4ooVwruVuCjlnklU9Hy5kSay6LNeiYqv7PjU71+oQWCgHdmB+QcB1t5V7+623sbeXXsGLgy+EbAxegxZ1XtyouW5Ld5F9q9GtCZ11Z2HDJg27dS5c0djIMyrvwL1Elbgmbkv3nTmpbTx5a58ZEeHlIiJmhEeUCw87OCNCZSJMkqK4nWJa+E70KviUNnlpz8pnolu0atLWPDd5Ye+6N0Latm/RSb7VtNuTc6v4gwfcUq568CBa6AgAAAnf3mlYOr2/U+eHZkg41F2gtCyzuA+AhmkRcXiKqLkGv0G0LKl6EWquoiXD9ua35Kvrb/DSahlAIBNQhmOQZyAoDJUTmoihl4lRjTZxhnkgcQ+BzH1GFGkwk5AdnosNwXEIHFUdQBaAiYRpZGJsHhMXZjJI3FUgc8+Bwv1kErqFfbIhLWZBaGw410AjbdshEgwyzrnAYKW8POuMJEDcicMjIvxjg+tAiRK5pAole26Fi4FOXHlGKTbQcPjt4uTbTV5w7sY13AgFgxNUVE4FuIWzBBXLVegDmsd7+xlrL3oZYbQ8lXKUI3lyPYaTxhIJmrG5rmK9vlSCoflfKeQabKRy8CCw7YjReZVGjvRc/8Gn3vEiLOr74PlAfv+1Q9VSHs/l6Tm/nMFjJuLiPNHTGI9vR5xALUQwYDyIsGDESSKZFFJJI908y2iXWzJq0Cj5RDdOO6nFE954+YIpXx1UcFoaLx+TN/EhpYPVt1cBAA==') format('woff2'),
      url('data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAfMAA0AAAAADSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAHsAAAABoAAAAcjQ+WV0dERUYAAAeQAAAAHgAAAB4AKQART1MvMgAAAaAAAABCAAAAVjxwSCNjbWFwAAAB/AAAAEkAAAFK5m7pl2dhc3AAAAeIAAAACAAAAAj//wADZ2x5ZgAAAmAAAAN8AAAGiB3BA0toZWFkAAABMAAAADAAAAA2GiKzS2hoZWEAAAFgAAAAHQAAACQHcAOFaG10eAAAAeQAAAAYAAAAHg2lAQZsb2NhAAACSAAAABgAAAAYB5YI6G1heHAAAAGAAAAAHwAAACABHQB6bmFtZQAABdwAAAFNAAACrJtyy2Nwb3N0AAAHLAAAAFkAAAB0hhp62HjaY2BkYGAA4iTORQfi+W2+MnCzMIDA7a3bl8Nptv8NzJOYG4BcDgYmkCgASEMMAXjaY2BkYGBu+N/AEMPCAALMkxgYGVABCwBRzAL+AAAAeNpjYGRgYOBmyGPgYAABJiDmAkIGhv9gPgMAFOkBmAB42mNgZGFgnMDAysDA1Ml0hoGBoR9CM75mMGLkAIoysDIzYAUBaa4pDA7PGJ8ZMDf8b2CIYW5kaAQKM4LkAN52DA4AAHjaY2GAABYIZmPwBMI8MPRkaAAAEskCuHjaY2BgYGaAYBkGRgYQcAHyGMF8FgYNIM0GpBkZmJ4xPjP4/5+BAUhr/f8vxSR5C6oeCBjZGOAcRiYgwcSAChgZhj0AAM5gCc8AAAAAAAAAAAAAAACYAPQBjgH2Al4CugMSA0R42o1UT2zTdhR+z26c2ooduXbiEIdkjhtnKzRMThuXqI34syKlaDBp1ZD2hwMMkJAojAPigKAwDrtsmjggDcSFcoALEtzWy05rx20r5VAEhx2oYOyI2CVxeT+7JU0h0RTne9/zTy953/f8DL0grFzjv+DPQhxysAU82A374Ss4BoBZNFQFo1YJi2oNvYilYELVk2XLrXhqCdFN6kLULuFQhW61uMf4Fsw7xO11vNDhPvfv4Cji6GDzchi5c83LcV2Pc+fiOqLucyyxGeBthq/fwn8MfmTQ3zrecJM/iyMDjecDI0iRT1HchX1K47miaQqfUvqaM3qW/U1WX4uLIQ+vtgQAeqC+Ms1P8dPQC2kYgCr5ZKmWaued4YLl5jDJPLMtSskzjXwxEmFeHK6hUXaTmzF0iuXcT36C+25KUpr/cOO6cimGaGrN7VoG03N4WJIRZcm/EcZ5SQ6AOG83ZrlfFWlB+UHWGs9009T5m3raPyhL20SFQJJfyFIprKNAfQttfY/Bp/ANnHindxqvEPY+VNFo5Fmk+SfKWQybTqxrfwxL6FlhzkrGaPRGkIdyW3nrnOTq3OmTIpNb15XzciYQmzmDW/P0lBVyVTEWE6shpm05/gRjgigK/quoKEYZx951yepB4MasLD6Mf6/0Nf5edcP0B/PbED/eMSi4GBM1UcZvFQpksbPphfzBhCRUBCmAW2J0WOgVo+WoyCj7eQLm2RR5dmXVsw9hBEZhR8uz4ns8ywuU0jZQ4tgFq32DDCtheaqtcvdp6qdP0niaL8kH+bxs6s0q9f2Y4yNYjfCcP4dVx6UNc/y5IKp4xL++uLuT1KNU8iASQY/jJ1nRg7AYPcf9c2LZv4JTAO16TPgIttNzsLOrnvL/EJSwh98VlNaaI7qZ1v7oruj6rg2KtExa429pmW6KrtbjCwsb9aQhCyVwodJ9PnTyPhHs03Eqj/AT/w4eNwuI/Rn/ahBzrHv27TgR/zfcOckKfsn0s0I8ZhbG68t16jvStosOdV3rvomWS1tEGe2QsZ6XGae3KPFOq3UXf06l/FOGsRbvsatT1zNGKZUqGbP0JbYagIdpAH6aZ47LsAlAxGTFq2HREaIK5uhFUAzeFYaC3Ev/4pe/18flC1//ta8u7Hk6s9TTszQTIFf0Dw1l9u6bv1ZLfPb5wwPzaweEbwCNs0tEeNqNkT9OwzAYxZ/7D9FIHUAwe2IAmv4ZO1Kp7Awd2NrUCa2SOHLcSl04BAMH4Bg9AMfgAD0Fr+HrUpbGyqefn5/fl9gArvADhb/nBo/CCgFehWu4wEa4Tv1TuEHeCTfJx5wWAlUTbuNBxcIBrtWOCapxydl9lXZghVs8CdfQQSxcp/4u3CB/CTfJ38It8l64janqCAe4Ux9UxnAwmMGzLqAxx5Z1iQgWOTsdqqcP7bEzM28Wer7Vy8jmsc095Yyj+8+PLOseTcALsxOskbKP49Qk63Tmztt7jmfKfIeSrsOqxgAh+pSNK5c214Owf17OM3PyKuv0PEreb4IhVc+9mq9jQkaaSJLh36VkjaJaW1GJqIeMNblxx6MrN8nQ+1jHzmZ6wrYmTa0unF2ZyNP8VvUoMEKPIz5JD6vvz2jzvhj1erEEhJHN8AuKq3jTAAAAeNpdiEsOgCAQxXgogp+reChxJnESgUTQ86u4s4smrdLqY6iG+jPWq6HRoIVBBwuHfgoci6Q4h9Ofhg652AWJFFNhkzfmYr2Uxe9P7ULcUFotSX7PDa0DFeMAAAAAAAAB//8AAgABAAAADAAAABYAAAACAAEAAwAKAAEABAAAAAIAAAAAeNpjYGBgZACCq0vUOUD07a3bl8NoAEb7B4YAAA==') format('woff');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}

.mm-iconfont::before {
  font-family: 'mm-iconfont', sans-serif !important;
  font-size: 16px;
  font-style: normal;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

          .mention[data-type='1']::before,
          .mention[data-type='3']::before,
          .mention[data-type='8']::before,
          .mention[data-type='11']::before,
          .mention[data-type='12']::before,
          .mention[data-type='15']::before,
          .mention[data-type='16']::before {
            content: '\e62f';
            display: inline-block;
            vertical-align: middle;
            margin-top: -4px;
            font-size: inherit;
          }
          .mention[data-type='3']::before {
            content: '\e62c';
          }
          .mention[data-type='8']::before {
            content: '\e62d';
          }
          .mention[data-type='11']::before {
            content: '\e62b';
          }
          .mention[data-type='12']::before {
            content: '\e62a';
          }
          .mention[data-type='15']::before {
            content: '\e62e';
          }
          .mention[data-type='22']::before {
            content: '\e602';
          }

          body {
            margin: 50px 20px;
            padding: 0;
            color: #333;
            font-family: 'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'PingFang SC',
                  Helvetica, Arial, 'Microsoft YaHei', 微软雅黑, 黑体, Heiti, sans-serif,
                  SimSun, 宋体, serif,
                  'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
          }

          body.narrow {
            max-width: 790px;
            margin-left: auto;
            margin-right: auto;
            padding-left: 20px;
            padding-right: 20px;
          }

          .title {
            min-height: 40px;
            padding-left: 10px;
            padding-bottom: 24px;
            margin-bottom: 20px;
            line-height: 40px;
            font-size: 26px;
            font-weight: 500;
            border-bottom: 1px solid #e5e6e8;
          }

          .node-list {
            margin: 0 0 0 28px;
            padding: 0;
            list-style: none;
          }

          .node {
            position: relative;
          }

          .node.drill-node > .content {
            margin-bottom: 15px;
            font-size: 20px;
            line-height: 28px;
          }

          .node.drill-node > .note {
            margin-bottom: 10px;
          }

          .content {
            min-height: 24px;
            padding-top: 2px;
            padding-bottom: 3px;
            line-height: 24px;
            font-size: 16px;
          }

          .note {
            position: relative;
            padding-bottom: 2px;
            line-height: 22px;
            font-size: 14px;
            color: #888;
            white-space: pre-wrap;
          }

          .content > *,
          .note > * {
            padding-top: 2px;
            padding-bottom: 2px;
          }

          .note:empty {
            padding-bottom: 0;
          }

          .node.finished .content,
          .node.finished .note {
            opacity: 0.5;
          }

          .node.finished > .content {
            text-decoration: line-through;
          }

          .heading1 > .content {
            min-height: 34px;
            line-height: 34px;
            font-size: 24px;
            font-weight: 500;
          }

          .heading2 > .content {
            min-height: 30px;
            line-height: 30px;
            font-size: 21px;
            font-weight: 500;
          }

          .heading3 > .content {
            min-height: 27px;
            line-height: 27px;
            font-size: 19px;
            font-weight: 500;
          }

          .mention {
            padding-left: 2px;
            padding-right: 2px;
            color: #5856d5;
            word-break: break-all;
            text-decoration: none;
          }

          .content-link {
            color: unset;
            opacity: 0.6;
            word-break: break-all;
          }

          .tag {
            text-decoration: underline;
            opacity: 0.6;
            text-underline-offset: 5px;
          }

          .bold {
            font-weight: bold;
          }

          .italic {
            font-style: italic;
          }

          .underline {
            text-decoration: underline;
            text-underline-offset: 5px;
          }


          .underline.mask {
            text-decoration: none;
            border-bottom: 2px solid #5856d5;
          }

         .mask {
            // background-color: #e5e5ff; /* 浅紫色背景 */
            text-decoration: underline;
            text-decoration-color: #5856d5;
            text-decoration-thickness: 2px;
            text-underline-offset: 5px;
          }

          .maskEnable .mask:hover {
            cursor: pointer;
          }

          .maskEnable .mask {
            color: transparent !important;
            -webkit-text-fill-color: transparent !important;
          }

          .strikethrough {
            text-decoration: line-through;
            opacity: 0.5;
          }

          .strikethrough.underline{
            text-decoration: line-through underline;
            text-underline-offset: 5px;
            opacity: 0.5;
            border-bottom: 2px solid #5856d5;
          }

          .strikethrough.mask{
            text-decoration: line-through;
            opacity: 0.5;
            border-bottom: 2px solid #5856d5;
          }

          .strikethrough.mask.underline{
            text-decoration: line-through;
            // opacity: 0.5;
            border-bottom: 2px solid #5856d5;
          }

          .content .highlight-red,
          .highlight-red > .content > * {
            background-color: #ff8c8c99;
          }

          .content .highlight-yellow,
          .highlight-yellow > .content > * {
            background-color: #ffff2699;
          }

          .content .highlight-blue,
          .highlight-blue > .content > * {
            background-color: #8ce5ff99;
          }

          .content .highlight-cyan,
          .highlight-cyan > .content > * {
            background-color: #a3ffca99;
          }

          .content .highlight-pink,
          .highlight-pink > .content > * {
            background-color: #f3a6ff99;
          }

          .content .highlight-olive,
          .highlight-olive > .content > * {
            background-color: #c8ff8c99;
          }

          .content .highlight-grey,
          .highlight-grey > .content > * {
            background-color: #b1b6be99;
          }

          .text-color-red {
            color: #dc2d1e;
          }

          .text-color-yellow {
            color: #ffaf38;
          }

          .text-color-green {
            color: #75c940;
          }

          .text-color-blue {
            color: #3da8f5;
          }

          .text-color-purple {
            color: #797ec9;
          }

          .bullet {
            position: absolute;
            left: -25px;
            top: 5px;
            width: 18px;
            height: 18px;
            border-radius: 9px;
          }

          .node.collapsed > .bullet {
            background-color: #dee0e3;
          }

          .heading1 > .bullet {
            top: 10px;
          }

          .heading2 > .bullet {
            top: 8px;
          }

          .heading3 > .bullet {
            top: 6px;
          }

          .bullet-dot {
            position: absolute;
            left: 6px;
            top: 6px;
            width: 6px;
            height: 6px;
            background-color: rgb(100, 106, 115);
            border-radius: 3px;
          }

          .image-list {
            position: relative;
            margin: 0;
            padding: 0;
            list-style: none;
          }

          .image-item {
            padding-top: 2px;
            padding-bottom: 8px;
          }

          .image {
            display: block;
            max-width: 100%;
          }

          .children {
            position: relative;
          }

          .note::before,
          .image-list::before,
          .children::before {
            content: "";
            position: absolute;
            top: 0;
            left: -17px;
            width: 1px;
            height: 100%;
            background-color: #dee0e3;
          }

          .node.drill-node > .note::before,
          .node.drill-node > .image-list::before,
          .node.drill-node > .children::before,
          body.noline .note::before,
          body.noline .image-list::before,
          body.noline .children::before {
            display: none;
          }

          .node.drill-node > .note,
          .node.drill-node > .content,
          .node.drill-node > .image-list,
          .node.drill-node > .children {
            margin-left: 10px;
          }

          body.noline .node-list {
            margin-right: 20px;
          }

          .publish {
            margin-top: 20px;
            text-align: center;
            font-size: 13px;
            color: #666;
          }

          .publish-link {
            color: #4694FF;
          }

          .node .mention.mm-iconfont::before {
            content: '\e601';
          }

          .node .mention.mm-iconfont {
             color: #5856d5;
          }


          .table-container {
            width: 100%;
            margin: 0 0;
            padding: 8px !important;
          }

          .auto-table {
            table-layout: auto;
            // min-width: 100%;
            border-collapse: collapse;
            white-space: normal;
            border: none;
          }

          .auto-table td,
          .auto-table th {
            // min-width: 120px;
            max-width: 360px;
            height: 16px; /* 替代min-height */
            padding: 6px 9px;
            text-align: start;
            word-break: break-word;
            vertical-align: middle;
            border: 1px solid #bfc0c1;
            font-weight: normal;
          }

          /* 为所有单元格设置最小高度 */
          .auto-table td,
          .auto-table th {
            min-height: 16px;
            height: 16px; /* 默认固定高度 */
          }

          /* 仅当有实际内容时才允许自动调整高度 */
          .auto-table td:has(> :not(.column-select-btn, .row-select-btn):not(br):not(:empty)),
          .auto-table th:has(> :not(.column-select-btn, .row-select-btn):not(br):not(:empty)) {
            height: auto;
          }

          .auto-table td,
          .auto-table th {
            position: relative; /* 为伪元素定位做准备 */
            /* 保留其他原有样式 */
          }

          /* 移除hover时的边框效果 */
          .auto-table tr.selected-row td::after,
          .auto-table tr.selected-row th::after,
          .auto-table .selected-column::after {
            display: none !important;
          }

          /* 保留原有的hover效果，但会被上面的规则覆盖 */
          .auto-table td:hover::after,
          .auto-table th:hover::after {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            // border: 2px solid #5856d5;
            pointer-events: none; /* 确保不会影响交互 */
            z-index: 1;
          }

          .selected-row,
          .selected-column {
            outline: 2px solid #5856d5;
            outline-offset: -2px; /* 调整outline与元素边缘的距离 */
            position: relative;
            z-index: 1;
          }

          .selected-column {
            position: relative;
            z-index: 1;
            //background-color: rgba(88, 86, 213, 0.1); /* 可选：添加背景色以突出显示 */
          }

          /* 移除单个cell的outline */
          .selected-column {
            outline: none;
          }

          /* 在表格上添加一个伪元素来创建整列的外框 */
          table {
            position: relative;
          }

          table::after {
            content: '';
            position: absolute;
            z-index: 2;
            pointer-events: none;
            top: 0;
            bottom: 0;
            outline: 2px solid #5856d5;
            /* 宽度和位置会通过JavaScript动态设置 */
            left: var(--column-left, 0);
            width: var(--column-width, 0);
            /* 添加这行来控制显示/隐藏 */
            display: var(--column-display, none);
          }

          .column-select-btn,
          .row-select-btn {
            position: absolute;
            background-color: #f4f4f5; /* 默认/hover状态的背景色 */
            color: #bfc0c1; /* 默认/hover状态的文字颜色 */
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            opacity: 0;
            transition: opacity 0.2s, background-color 0.2s, color 0.2s;
            z-index: 10;
            border-radius: 4px;
            font-size: 12px;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
            user-select: none; /* 防止选中文本 */
            -webkit-user-select: none; /* Safari 支持 */
            -moz-user-select: none; /* Firefox 支持 */
            -ms-user-select: none; /* IE/Edge 支持 */
            pointer-events: auto; /* 确保点击事件生效 */
          }

          .column-select-btn {
            /* 修改位置计算方式，确保完全显示 */
            top: 0;
            left: 50%;
            width: 24px;
            height: 16px;
            transform: translate(-50%, -50%); /* 改为向上偏移半个高度 */
          }

          .row-select-btn {
            /* 修改位置计算方式，确保完全显示 */
            left: 0;
            top: 50%;
            width: 16px;
            height: 24px;
            transform: translate(-50%, -50%); /* 改为向左偏移半个宽度 */
          }

          /* 阻止内部被编辑 */
          .column-select-btn:focus,
          .row-select-btn:focus {
            outline: none;
          }

          /* 悬停时显示 */
          td:hover .column-select-btn,
          td:hover .row-select-btn,
          th:hover .column-select-btn,
          th:hover .row-select-btn {
            opacity: 1;
          }

          /* 选中状态 */
          .column-select-btn.selected,
          .row-select-btn.selected {
            background-color: #5856d5;
            color: white;
            opacity: 1; /* 确保选中状态始终可见 */
          }

          /* 提供按钮图标 */
          .column-select-btn::after {
            content: '⋯';
          }

          .row-select-btn::after {
            content: '⋮';
          }

          .auto-table u {
            text-underline-offset: 5px;
          }

          .editable-text-area {
            outline: none;
            min-height: 1.2em;
          }

          /* table-styles.css */

          /* 不可编辑表格的样式 */
          .non-editable {
            user-select: none !important; /* 禁止选择文本 */
            -webkit-user-select: none !important; /* Safari 支持 */
            -moz-user-select: none !important; /* Firefox 支持 */
            -ms-user-select: none !important; /* IE/Edge 支持 */
            cursor: default !important; /* 使用默认光标 */
          }

          /* 仅表格内容不可交互，但保留容器的滚动功能 */
          .non-editable table,
          .non-editable thead,
          .non-editable tbody,
          .non-editable tr,
          .non-editable th,
          .non-editable td {
            pointer-events: none !important;
            user-select: none !important;
            -webkit-user-select: none !important;
            -moz-user-select: none !important;
            -ms-user-select: none !important;
            cursor: default !important;
            outline: none !important; /* 防止获得焦点时出现轮廓 */
          }

          /* 表格容器允许滚动 */
          .table-container {
            margin: 0px 0px;
            max-width: 100%; /* 确保容器不会超出父元素 */
            pointer-events: auto !important; /* 允许容器的交互，包括滚动 */
          }

          /* 强制所有表格相关元素不可编辑 */
          table [contenteditable='false'] {
            -webkit-user-modify: read-only !important; /* Safari 特定属性 */
            -moz-user-modify: read-only !important; /* Firefox 特定属性 */
            user-modify: read-only !important;
            -webkit-user-select: none !important;
            -moz-user-select: none !important;
            -ms-user-select: none !important;
            user-select: none !important;
          }

          @media print {
            body {
              margin-top: 0;
              margin-bottom: 0;
            }
          }

          @page {
            margin-left: 0.25in;
            margin-right: 0.25in;
            margin-top: 0.5in;
            margin-bottom: 0.5in;
          }
        </style>
        <style>
        @font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype");font-weight:400;font-style:italic}@font-face{font-family:"KaTeX_SansSerif";src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto;border-color:currentColor}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-version:after{content:"0.12.0"}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-weight:700;font-style:italic}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed;border-collapse:collapse}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;vertical-align:bottom;position:relative}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;vertical-align:bottom;font-size:1px;width:2px;min-width:2px}.katex .vbox{-ms-flex-direction:column;flex-direction:column;align-items:baseline}.katex .hbox,.katex .vbox{display:-ms-inline-flexbox;display:inline-flex}.katex .hbox{-ms-flex-direction:row;flex-direction:row;width:100%}.katex .thinbox{display:inline-flex;flex-direction:row;width:0;max-width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{width:0;position:relative}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{display:inline-block;width:100%;border-bottom-style:solid}.katex .hdashline{display:inline-block;width:100%;border-bottom-style:dashed}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;position:absolute;width:100%;height:inherit;fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex svg path{stroke:none}.katex img{border-style:none;min-width:0;min-height:0;max-width:none;max-height:none}.katex .stretchy{width:100%;display:block;position:relative;overflow:hidden}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{width:100%;position:relative;overflow:hidden}.katex .halfarrow-left{position:absolute;left:0;width:50.2%;overflow:hidden}.katex .halfarrow-right{position:absolute;right:0;width:50.2%;overflow:hidden}.katex .brace-left{position:absolute;left:0;width:25.1%;overflow:hidden}.katex .brace-center{position:absolute;left:25%;width:50%;overflow:hidden}.katex .brace-right{position:absolute;right:0;width:25.1%;overflow:hidden}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{box-sizing:border-box;border:.04em solid}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{text-align:left;padding-left:2em}
        </style>
      </head>
      <body >
        <div class="title">智能OJ系统</div>
        <ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>数据库</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span class="strikethrough">必须有专用的数据库系统支撑，要保证查询速度。具体数据库可以任选，MySQL等</span></div>
    
    
    
  </li>
  </ul></div>
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>登录和注册</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>分为三种角色，管理员、教师和学生。教师登录和学生登录要分开，登录后显示不同的功能。学生以完成作业为目标，教师端主要布置任务。管理员负责给教师分配权限。</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>不允许学生自行注册，必须由教师端分配账号。学生登录后可以修改密码。</span></div>
    
    
    
  </li>
  </ul></div>
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>管理员功能</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span class="strikethrough">能添加教师账号</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span class="strikethrough">为每位教师分配课程权限</span></div>
    
    
    
  </li>
  </ul></div>
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>教师端功能</span></div>
    
    <div class="note mm-editor"><span>
​框架VUE,前端HTML,后端python。加密文字、文件</span></div>
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>新用户注册</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>可以通过邮件或手机等功能，自行找回密码。原密码不能显示，可以设置新密码。（可选功能）</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>对于一个新用户，ID，姓名，和密码是必须提供的，其他的班级，专业，学校等信息作为可选项</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>可以批量录入（图片是示例，供参考，不用非要一模一样），构建类别、子类别，叶子节点可以批量导入。父类的用户信息应该包括所有之类的用户信息。</span></div>
    <ul class="image-list">
    <li class="image-item">
    <img
      src="https://api2.mubu.com/v3/document_image/32727132_125a4eb0-6585-40db-ea61-cfcde38957de.png"
      style="width: 400px;"
      crossorigin="anonymous"
      class="image"
    />
  </li>
  </ul>
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>可以单独录入（图片是示例，供参考，不用非要一模一样）</span></div>
    <ul class="image-list">
    <li class="image-item">
    <img
      src="https://api2.mubu.com/v3/document_image/32727132_702277cd-80a8-4916-ad10-bdcf1c1dcde4.png"
      style="width: 400px;"
      crossorigin="anonymous"
      class="image"
    />
  </li>
  </ul>
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>删除和修改用户信息，包括移动用户信息，复制用户信息，删除用户信息等。</span></div>
    <ul class="image-list">
    <li class="image-item">
    <img
      src="https://api2.mubu.com/v3/document_image/32727132_1ec8bb2b-b89a-42b4-c4c9-6fde789c2d50.png"
      style="width: 400px;"
      crossorigin="anonymous"
      class="image"
    />
  </li>
  </ul>
    
    
  </li>
  </ul></div>
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>题目智能生成</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>要支持C/C++和Python的智能评测</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>要支持选择题，填空题，简答题，编程题和片段编程题（给出一部分代码）</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>简答题</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>给出关键点和评分准则</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>可以调用大模型对答案给出评分</span></div>
    
    
    
  </li>
  </ul></div>
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>编程题和片段编程题</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>给出需求描述，由大模型生成题目描述，测试样例，测试用例至少5组，程序代码，然后允许用户修改，确认提交后存入数据库。</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>提交时要进行自检，确保测试案例正确。</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>提交时不能直接将代码以文本方式提交给服务端，因为有些代码中的关键字会被学校网络认为攻击。建议提交前需要先进行加密，修改关键字，避免非法关键字。但评测时需求先进行解密。加密解密不是关键，最重要的是不要出现非法关键字。</span></div>
    
    
    
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>如果以文件形式提交，不可以用py或bat等脚本文件的后缀，会被网络认定为攻击。建议采用非脚本文件的后缀文件</span></div>
    
    
    
  </li>
  </ul></div>
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>题目评测</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>评测的提交方式（文件或文本），教师可以设定，只针对这个题目</span></div>
    
    
    
  </li>
  </ul></div>
  </li>
  </ul></div>
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>作业布置</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>手工选题</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>从已有的题目中进行挑选，布置作业。作业可以设定时间，作业对象等信息。</span></div>
    <ul class="image-list">
    <li class="image-item">
    <img
      src="https://api2.mubu.com/v3/document_image/32727132_c0a083eb-9481-4a6c-f80a-4ff10b53e243.png"
      style="width: 400px;"
      crossorigin="anonymous"
      class="image"
    />
  </li>
  </ul>
    
    
  </li>
  </ul></div>
  </li>
<li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>自动选题</span></div>
    
    
    <div class="children"><ul class="node-list">
    <li class="node">
    <div class="bullet">
    <div class="bullet-dot"></div>
  </div>
    <div class="content mm-editor" ><span>给出题目的需求描述，调用大模型自动筛选题目，符合教师的需求。</span></div>
    <ul class="image-list">
    <li class="image-item">
    <img
      src="https://api2.mubu.com/v3/document_image/32727132_0af001b4-6724-40c6-aa37-35b9f4c69a8d.png"
      style="width: 400px;"
      crossorigin="anonymous"
      class="image"
    />
  </li>
  </ul>
    
    
  </li>
  </ul></div>
  </li>
  </ul></div>
  </li>
  </ul></div>
  </li>
  </ul>
        <div class="publish" style="display: flex; align-items: center; justify-content: center;">
        <span>by&nbsp;</span>
        <span style="color:#dc9b04"> 🛰</span>
        <span>&nbsp;由&nbsp;</span>
        <svg width="12" height="12" viewBox="0 0 176 168" fill="none" xmlns="http://www.w3.org/2000/svg">
          <path d="M27.0026 84.7169L27.0026 84.7187C27.1543 105.515 33.9015 115.962 40.8965 126.793C41.7901 128.177 42.6878 129.567 43.5763 130.986L43.5761 130.986L43.5837 130.997C49.6561 140.131 48.6663 152.568 40.617 160.617C31.4397 169.794 16.5603 169.794 7.38299 160.617C-0.666371 152.568 -1.65605 140.131 4.41557 131.003L4.48092 130.905L4.48238 130.893L5.40506 129.434L5.40713 129.431L8.60254 124.464L8.60329 124.463C14.9616 114.519 20.7111 104.275 20.9895 85.4386L20.9895 85.4367L20.9974 84.7206L20.9974 84.7169L21 84.0018V84C21 72.0349 18.8456 63.4536 15.6833 56.2661C13.2366 50.7047 10.1829 45.976 7.093 41.1912C6.20169 39.811 5.30737 38.4261 4.42373 37.0152L4.42388 37.0151L4.41636 37.0038C-1.65613 27.8693 -0.666305 15.4323 7.38299 7.38299C16.5603 -1.79433 31.4397 -1.79433 40.617 7.38299C48.6664 15.4324 49.656 27.8693 43.5844 36.9969L43.5164 37.0992L43.515 37.1121L42.6052 38.5507L42.6032 38.5539L39.1998 43.8464L39.1988 43.848C32.8381 53.823 27.1423 64.183 27.0026 83.2793L27.0026 83.2812L27 83.9992L27 84.0028L27.0026 84.7169ZM171.584 36.9969L171.516 37.0996L171.515 37.1124L170.605 38.5507L170.603 38.5539L167.2 43.8464L167.199 43.848C160.838 53.823 155.142 64.183 155.003 83.2793L155.003 83.2812L155 83.9992L155 84.0028L155.003 84.7169L155.003 84.7187C155.154 105.515 161.901 115.962 168.896 126.793C169.79 128.177 170.688 129.567 171.576 130.986L171.576 130.986L171.584 130.997C177.656 140.131 176.666 152.568 168.617 160.617C159.44 169.794 144.56 169.794 135.383 160.617C127.334 152.568 126.344 140.131 132.416 131.003L132.481 130.905L132.482 130.893L133.405 129.434L133.407 129.431L136.603 124.464L136.603 124.463C142.962 114.519 148.711 104.275 148.989 85.4386L148.989 85.4367L148.997 84.7206L148.997 84.7169L149 84.0018V84C149 72.0349 146.846 63.4536 143.683 56.2661C141.237 50.7047 138.183 45.976 135.093 41.1912C134.202 39.811 133.307 38.4261 132.424 37.0152L132.424 37.0151L132.416 37.0038C126.344 27.8693 127.334 15.4323 135.383 7.38299C144.56 -1.79433 159.44 -1.79433 168.617 7.38299C176.666 15.4324 177.656 27.8693 171.584 36.9969ZM88 60.5C100.979 60.5 111.5 71.0213 111.5 84C111.5 96.9787 100.979 107.5 88 107.5C75.0213 107.5 64.5 96.9787 64.5 84C64.5 71.0213 75.0213 60.5 88 60.5Z" fill="rgb(143, 149, 158)" stroke="rgb(143, 149, 158)"/>
          </svg>
        <span style="color:#dc9b04">&nbsp;幕布</span>
        <span>&nbsp;发布</span>
      </div>
      </body>
    </html>
  